package com.huike.report.service;

import com.huike.clues.domain.TbActivity;
import com.huike.clues.domain.TbClue;
import com.huike.common.core.page.TableDataInfo;
import com.huike.report.domain.vo.*;
import com.huike.report.domain.vo.TigerDragonDTO;

import java.util.List;
import java.util.Map;

/**
 * @Description TODO
 * @Author hzh
 * @Date 2023-07-13 8:24
 */
public interface IReportService {
    //List<Map<String, Object>> activityStatistics(String beginCreateTime, String endCreateTime);

    /**
     * 渠道统计活动明细列表 分页查询
     * @param tbActivity
     * @return
     */
    List<ActivityStatisticsVo> activityStatisticsList(TbActivity tbActivity);

    /**
     * 线索统计明细统计 分页查询
     * @param tbClue
     * @return
     */
    List<TbClue> cluesStatisticsList(TbClue tbClue);

    /**
     * 销售统计归属渠道明细列表
import com.huike.report.domain.vo.IndexBaseInfoVO;
import com.huike.report.domain.vo.IndexTodayInfoVO;
import com.huike.report.domain.vo.IndexTodoInfoVO;
import com.huike.report.domain.vo.TigerDragonDTO;

import java.text.ParseException;
import java.util.List;

 /**
     * 基础数据统计
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    TableDataInfo<List<ReportSalesChannelStatisticsListDataVo>> channelStatisticsList(String beginCreateTime, String endCreateTime);

    /**
     * @description: 客户统计新增客户数报表
     * @param: beginCreateTime
    endCreateTime
     * @return: com.huike.report.domain.vo.LineChartVo
     * @author STJ12138
     * @date: 2023/7/13 9:29
     */
    LineChartVo contractStatisticsChart(String beginCreateTime, String endCreateTime);

    /**
     * @description: 销售统计归属部门明细列表
     * @param: beginCreateTime
    endCreateTime
     * @return: com.huike.common.core.page.TableDataInfo<java.util.List<com.huike.report.domain.vo.ReportSalesDeptStatisticsListDataVo>>
     * @author STJ12138
     * @date: 2023/7/13 16:07
     */
    TableDataInfo<List<ReportSalesDeptStatisticsListDataVo>> deptStatisticsList(String beginCreateTime, String endCreateTime);

    /**
     * @description: 销售统计归属人报表
     * @param: beginCreateTime
    endCreateTime
     * @return: com.huike.common.core.page.TableDataInfo<java.util.List<com.huike.report.domain.vo.ReportSalesOwnerShipStatisticsListDataVo>>
     * @author STJ12138
     * @date: 2023/7/13 16:08
     */
    TableDataInfo<List<ReportSalesOwnerShipStatisticsListDataVo>> ownerShipStatisticsList(String beginCreateTime, String endCreateTime);

    /**
     * @description: 销售统计报表
     * @param: beginCreateTime
    endCreateTime
     * @return: com.huike.report.domain.vo.LineChartVo
     * @author STJ12138
     * @date: 2023/7/13 17:12
     */
    LineChartVo salesStatistics(String beginCreateTime, String endCreateTime);

    /**
     * @description: 客户统计学科分布统计报表
     * @param: beginCreateTime
    endCreateTime
     * @return: java.util.List<com.huike.report.domain.vo.ReportSubjectStatisticsDataVo>
     * @author STJ12138
     * @date: 2023/7/13 17:33
     */
    List<ReportSubjectStatisticsDataVo> subjectStatistics(String beginCreateTime, String endCreateTime);

    /**
     * @description: 线索统计线索转换率报表
     * @param: beginCreateTime
    endCreateTime
     * @return: com.huike.report.domain.vo.VulnerabilityMapVo
     * @author STJ12138
     * @date: 2023/7/13 18:58
     */
    VulnerabilityMapVo getVulnerabilityMap(String beginCreateTime, String endCreateTime);

    IndexBaseInfoVO getBaseInfo (String beginCreateTime, String endCreateTime);

    /**
     * 获取今日简报数据
     * @return
     */
    IndexTodayInfoVO getTodayInfo();

    /**
     * 获取待办数据
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    IndexTodoInfoVO getTodoInfo(String beginCreateTime, String endCreateTime);

    /**
     * 线索转换龙虎榜
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<TigerDragonDTO> salesStatistic(String beginCreateTime, String endCreateTime);

    /**
     * 商机转换龙虎榜
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    List<TigerDragonDTO> businessChangeStatistics(String beginCreateTime, String endCreateTime);
}
